home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 3 No 078 < prev    next >
Internet Message Format  |  1995-01-06  |  64KB

  1. From: pottier@clipper.ens.fr (Francois Pottier)
  2. Subject: csmp-digest-v3-078
  3. To: csmp-digest@ens.fr
  4. Date: Fri, 6 Jan 1995 14:55:12 +0100 (MET)
  5. Mime-Version: 1.0
  6. Reply-To: pottier@clipper.ens.fr
  7. X-Sequence: 84
  8.  
  9. C.S.M.P. Digest             Fri, 06 Jan 95       Volume 3 : Issue 78
  10.  
  11. Today's Topics:
  12.  
  13.         64-bit math: "Int64Bit"? "comp"? "wide"? wtf??
  14.         Accessing &qd.arrow from a Power PC code resource?
  15.         How do I output a hairline line to the printer?
  16.         Introduction to object-oriented programming?
  17.         Memory management in C ?
  18.         Recordable applications
  19.         Transparent PICTs?
  20.  
  21.  
  22.  
  23. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  24. (pottier@clipper.ens.fr).
  25.  
  26. The digest is a collection of article threads from the internet newsgroup
  27. comp.sys.mac.programmer.  It is designed for people who read c.s.m.p. semi-
  28. regularly and want an archive of the discussions.  If you don't know what a
  29. newsgroup is, you probably don't have access to it.  Ask your systems
  30. administrator(s) for details.  If you don't have access to news, you may
  31. still be able to post messages to the group by using a mail server like
  32. anon.penet.fi (mail help@anon.penet.fi for more information).
  33.  
  34. Each issue of the digest contains one or more sets of articles (called
  35. threads), with each set corresponding to a 'discussion' of a particular
  36. subject.  The articles are not edited; all articles included in this digest
  37. are in their original posted form (as received by our news server at
  38. nef.ens.fr).  Article threads are not added to the digest until the last
  39. article added to the thread is at least two weeks old (this is to ensure that
  40. the thread is dead before adding it to the digest).  Article threads that
  41. consist of only one message are generally not included in the digest.
  42.  
  43. The digest is officially distributed by two means, by email and ftp.
  44.  
  45. If you want to receive the digest by mail, send email to listserv@ens.fr
  46. with no subject and one of the following commands as body:
  47.     help                                Sends you a summary of commands
  48.     subscribe csmp-digest Your Name     Adds you to the mailing list
  49.     signoff csmp-digest                 Removes you from the list
  50. Once you have subscribed, you will automatically receive each new
  51. issue as it is created.
  52.  
  53. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  54. Questions related to the ftp site should be directed to
  55. scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
  56. digest are available there.
  57.  
  58. Also, the digests are available to WAIS users.  To search back issues
  59. with WAIS, use comp.sys.mac.programmer.src. With Mosaic, use
  60. http://www.wais.com/wais-dbs/comp.sys.mac.programmer.html.
  61.  
  62.  
  63. -------------------------------------------------------
  64.  
  65. >From first.ascent@mindlink.bc.ca (Alex Curylo)
  66. Subject: 64-bit math: "Int64Bit"? "comp"? "wide"? wtf??
  67. Date: 22 Dec 1994 11:18:01 GMT
  68. Organization: First Ascent
  69.  
  70. So I need to port this 64-bit integer math library from handcrafted
  71. Windows assembly code (yuck! ptoo!), so I went looking for what kind of
  72. Toolbox support there is for 64-bit integers, and I'm all confused now.
  73.  
  74. 1) LongMul() multiplies two longs into a signed "Int64Bit". This
  75. appears to be the only place in the known universe that this type
  76. appears.
  77.  
  78. 2) SANE has the signed "comp" type. But it seems to be short on things
  79. to do with it, you seem to have to convert to extended to do much
  80. interesting. Unless I'm missing something.
  81.  
  82. 3) CodeWarrior's Types.h includes the perfect-appearing "wide" and
  83. "UnsignedWide" types. But I've never heard of these, and they don't
  84. appear in my Symantec or MPW Types.h, or anywhere else obvious.
  85. Hmmmmmm.
  86.  
  87. Can somebody tell me how all this fits together, and what the best way
  88. to do 64-bit integer math is?
  89.  
  90. +++++++++++++++++++++++++++
  91.  
  92. >From ensign@xmission.com (Ensign.CustSupport)
  93. Date: 22 Dec 1994 07:13:21 -0700
  94. Organization: XMission Public Access Internet (801-539-0900)
  95.  
  96.  
  97. Try looking at the PowerPC manual "IM PowerPC Numerics." It should offer 
  98. some help.
  99. I believe that "comp" was converted to "extended" on a 68K machine and 
  100. that the 68K machine was most efficient while using "extended." But that 
  101. is not the way it is on the PowerMac. Doubles are used extensively on the 
  102. PowerMac and "wide" will need a separate math library all its own. If 
  103. somebody knows of a "wide" library of functions, other than what is 
  104. already given, I would like to know about it.
  105.  
  106. Norman Parker
  107. ensign@xmission.com
  108.  
  109. Alex Curylo 
  110. (first.ascent@mindlink.bc.ca) wrote:
  111. : So I need to port this 64-bit integer math library from handcrafted
  112. : Windows assembly code (yuck! ptoo!), so I went looking for what kind of
  113. : Toolbox support there is for 64-bit integers, and I'm all confused now.
  114.  
  115. : 1) LongMul() multiplies two longs into a signed "Int64Bit". This
  116. : appears to be the only place in the known universe that this type
  117. : appears.
  118.  
  119. : 2) SANE has the signed "comp" type. But it seems to be short on things
  120. : to do with it, you seem to have to convert to extended to do much
  121. : interesting. Unless I'm missing something.
  122.  
  123. : 3) CodeWarrior's Types.h includes the perfect-appearing "wide" and
  124. : "UnsignedWide" types. But I've never heard of these, and they don't
  125. : appear in my Symantec or MPW Types.h, or anywhere else obvious.
  126. : Hmmmmmm.
  127.  
  128. : Can somebody tell me how all this fits together, and what the best way
  129. : to do 64-bit integer math is?
  130.  
  131. +++++++++++++++++++++++++++
  132.  
  133. >From ax52@cityscape.co.uk (Giuliano Gavazzi)
  134. Date: 22 Dec 1994 20:39:04 GMT
  135. Organization: CityScape Internet Sevices
  136.  
  137. In article <3dc1i1$fs0@xmission.xmission.com>, ensign@xmission.com
  138. (Ensign.CustSupport) wrote:
  139.  
  140. > Try looking at the PowerPC manual "IM PowerPC Numerics." It should offer 
  141. > some help.
  142. ...
  143. > Norman Parker
  144. > ensign@xmission.com
  145. > Alex Curylo 
  146. > (first.ascent@mindlink.bc.ca) wrote:
  147. ...
  148. > : Can somebody tell me how all this fits together, and what the best way
  149. > : to do 64-bit integer math is?
  150.  
  151. to my knowledge "IM PowerPC Numerics" tells only about floating
  152. point types. I am also interested in 64 bit integer math, and thus repeat:
  153. is there a way to di it without going to assembler or defining a new class.
  154.  
  155. Giuliano Gavazzi
  156.  
  157. +++++++++++++++++++++++++++
  158.  
  159. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  160. Date: Thu, 22 Dec 1994 19:00:48 GMT
  161. Organization: Apple Computer
  162.  
  163. Alex Curylo, first.ascent@mindlink.bc.ca writes:
  164. > 3) CodeWarrior's Types.h includes the perfect-appearing "wide" and
  165. > "UnsignedWide" types. But I've never heard of these, and they don't
  166. > appear in my Symantec or MPW Types.h, or anywhere else obvious.
  167. > Hmmmmmm.
  168.  
  169. These are used by the wide math routines for PowerPC, defined in FixMath.h.
  170. Unfortunately these routines only exist on PowerMacs. However, I believe
  171. they're not too hard to implement on 68020 and higher...
  172.  
  173. --Jens Alfke                           jens_alfke@powertalk.apple.com
  174.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  175.  
  176. ---------------------------
  177.  
  178. >From dpbsmith@world.std.com (Daniel P. B. Smith)
  179. Subject: Accessing &qd.arrow from a Power PC code resource?
  180. Date: Thu, 8 Dec 1994 02:58:43 GMT
  181. Organization: The World Public Access UNIX, Brookline, MA
  182.  
  183. I'm tinkering with a Mac code resource, which is a kind of "plug-in"
  184. for an application.  It is a "fat" resource that contains both 68K and
  185. PPC code versions.  I'm trying to arrange for an hourglass cursor to
  186. appear during a time-consuming operation.  I have no problem with
  187. SetCursor(GetCursor(watchCursor)), but I can't quite figure out how
  188. to get it back to being an arrow.  In the 68K code you'd use
  189. SetCursor(&qd.arrow) (I'm typing this from memory, away from my reference
  190. material so if it's really SetCursor(qd.arrow) or SetCursor(qd->arrow)
  191. don't flame me), but it's not clear how you can get at the QuickDraw
  192. globals in a PPC code resource.  Inside Mac seems to suggest that you
  193. choose any little chunk of memory to be the QuickDraw global area and
  194. you MAKE it the QuickDraw global area when you call InitGraf.  All
  195. well and good, but it's the _main application_ that does that, not me!
  196. (And I don't have source, or even object code, for the main application).
  197.  
  198. >From a PowerPC code resource, how can I get to either a) an arrow cursor
  199. resource, or b) the QuickDraw global area?  Is there anything more
  200. sensible to do than build my own cursor resource that just happens to
  201. look the same as the genuine arrow cursor and put it in a resource file?
  202.  
  203. -- 
  204. Daniel P. B. Smith
  205. dpbsmith@world.std.com
  206.  
  207. +++++++++++++++++++++++++++
  208.  
  209. >From bobschaaf@aol.com (Bobschaaf)
  210. Date: 9 Dec 1994 20:55:19 -0500
  211. Organization: America Online, Inc. (1-800-827-6364)
  212.  
  213. In article <D0H1Lv.AB3@world.std.com>, dpbsmith@world.std.com (Daniel P.
  214. B. Smith) writes:
  215.  
  216. >I have no problem with
  217. >SetCursor(GetCursor(watchCursor)), but I can't quite figure out how
  218. >to get it back to being an arrow.
  219.  
  220. Just call InitCursor().
  221. The only problem would be that is resets ths cursor level to 0.
  222.  
  223. >From Phoenix,
  224. Bob Schaaf
  225.  
  226. +++++++++++++++++++++++++++
  227.  
  228. >From Chris Watson <cwatson@cam.org>
  229. Date: 12 Dec 1994 20:53:27 GMT
  230. Organization: -
  231.  
  232. In article <3cb1q7$a8f@newsbf01.news.aol.com> Bobschaaf,
  233. bobschaaf@aol.com writes:
  234. >In article <D0H1Lv.AB3@world.std.com>, dpbsmith@world.std.com (Daniel P.
  235. >B. Smith) writes:
  236. >
  237. >>I have no problem with
  238. >>SetCursor(GetCursor(watchCursor)), but I can't quite figure out how
  239. >>to get it back to being an arrow.
  240. >
  241. >Just call InitCursor().
  242. >The only problem would be that is resets ths cursor level to 0.
  243.  
  244.  
  245. Perhaps I do not understand fully what you are trying to do, but to set
  246. the cursor to the standard arrow, just use:
  247.  
  248. SetCursor (&qd.arrow);
  249.  
  250. This is how I do it in my program, and it works on 68k and ppc....
  251.  
  252. Sorry if I misunderstood; good luck.
  253.  
  254. +++++++++++++++++++++++++++
  255.  
  256. >From Jens Alfke <jens_alfke@powertalk.apple.com>
  257. Date: Thu, 22 Dec 1994 19:28:16 GMT
  258. Organization: Apple Computer
  259.  
  260. Chris Watson, cwatson@cam.org writes:
  261. > Perhaps I do not understand fully what you are trying to do, but to set
  262. > the cursor to the standard arrow, just use:
  263. > SetCursor (&qd.arrow);
  264. > This is how I do it in my program, and it works on 68k and ppc....
  265.  
  266. It works fine if your code originally called InitGraf, so the QD globals are
  267. living in your "qd" global variable. If you didn't, i.e. you are a code
  268. resource or shared lib, you can't do this.
  269. The way to do it is to use the fact that the longword at A5 is a pointer to
  270. the variable qd.thePort; by dereferencing A5 and subtracting the appropriate
  271. offset -- sizeof(QDGlobals) - sizeof(GrafPtr) -- you can recover a pointer to
  272. the globals. I have a snippet that does this but I can't find it right now...
  273. Yes, this works even on PPC. Even PowerMacs have A5 worlds, and calling
  274. LMGetCurrentA5 will get you the current A5 value.
  275.  
  276. --Jens Alfke                           jens_alfke@powertalk.apple.com
  277.                    "A man, a plan, a yam, a can of Spam ... Bananama!"
  278.  
  279. ---------------------------
  280.  
  281. >From clarrob@wwc.edu (Robert LaVerne Clark)
  282. Subject: How do I output a hairline line to the printer?
  283. Date: 19 Dec 1994 11:46:30 -0800
  284. Organization: Walla Walla College, College Place, WA
  285.  
  286. How can I draw a hairline-width line to the
  287. printer? I'm successfully drawing a one-pixel-
  288. wide line, but that's too big and fat for my
  289. purposes.
  290.  
  291. Any ideas?
  292.  
  293. --Bob Clark (clarrob@wwc.edu)
  294.  
  295.  
  296. +++++++++++++++++++++++++++
  297.  
  298. >From kenlong@netcom.com (Ken Long)
  299. Date: Mon, 19 Dec 1994 21:42:05 GMT
  300. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  301.  
  302. Robert LaVerne Clark (clarrob@wwc.edu) wrote:
  303. : How can I draw a hairline-width line to the
  304. : printer? I'm successfully drawing a one-pixel-
  305. : wide line, but that's too big and fat for my
  306. : purposes.
  307.  
  308. This was all covered (I believe) in an earlier c.s.m.p.  If you consult 
  309. the digests from volume 3 you'll probably find it.
  310.  
  311. I'd say, off hand, it depends on the printer.  Screen resolution is 
  312. usually 72 dpi.  A StyleWriter is 360 dpi, which is 1/5th sreen res.  
  313. Therefore, if the printer draws a pixel, the printed pixel is 25x25 jet 
  314. squirts.  The StyeWriter (I or II) has an adjustment for scale 
  315. percentage.  If I draw a 72 dpi line-art in Color It! and scale it up 
  316. 500%, then it will "smooth scale" it - which means it takes one pixel and 
  317. widens and fades (blurs) it out from the center of the pixel.  So the 
  318. center new pixel is black and it grayscales out 5 pixels in both 
  319. directions to the background color.
  320.  
  321. so, from white, 5 darker pixels to blak, then 5 lighter pixel back to 
  322. white, in both directions (h, v).
  323.  
  324. Then, I'll remove all but the black pixels and print it at 360 dpi.  The 
  325. result is a 72 dpi printout using 360 dpi pixels.  In other words, I 
  326. scale it up 5 times, remove all but the black pixels and print and all 
  327. the "pixel" sixes are 1/5th their original size on the page, or one jet 
  328. suirt wide.
  329.  
  330. But it seems you want to do this with only a portion of the printout.  True?
  331.  
  332. -Ken-
  333.  
  334. +++++++++++++++++++++++++++
  335.  
  336. >From scouten@metrowerks.com (Eric Scouten)
  337. Date: Mon, 19 Dec 1994 19:28:23 -0600
  338. Organization: metrowerks, inc.
  339.  
  340. Robert LaVerne Clark (clarrob@wwc.edu) wrote:
  341. : How can I draw a hairline-width line to the
  342. : printer? I'm successfully drawing a one-pixel-
  343. : wide line, but that's too big and fat for my
  344. : purposes.
  345.  
  346. To which kenlong@netcom.com (Ken Long) responded:
  347.  
  348.  [most of instructions deleted]
  349. > percentage.  If I draw a 72 dpi line-art in Color It! and scale it up 
  350. > 500%, then it will "smooth scale" it - which means it takes one pixel and 
  351. > widens and fades (blurs) it out from the center of the pixel.
  352.  
  353. I'm not sure, but I think you have misinterpreted the question. I'm
  354. assuming (since this is in c.s.m.programmer.help) that Robert is wishing
  355. to draw hairlines directly from his program, rather than from some
  356. graphics program. Given that interpretation, here's my answer:
  357.  
  358.  
  359. What you really need to know is the SetLineWidth PICT comment. It's a
  360. rather strange and awkward beast, but it's your only choice unless you
  361. want to write straight PostScript. The best description of it can be found
  362. in Tech Note PR12. If you have WWW access, you can find it at:
  363.  
  364.   http://www.info.apple.com/dev/technotes/Printing/pr_12.html
  365.  
  366. Basically it works something like this:
  367.  
  368.     Handle itsWidthPoint = NewHandle(sizeof (Point));
  369.     SetPt((Point *) *itsWidthPoint, 4, 1);
  370.     PicComment(SetLineWidth, sizeof(Point), itsWidthPoint);
  371.  
  372. >From this point on, until the next SetLineWidth comment, line widths are
  373. multiplied by 1/4 (or whatever values you plug into the SetPt command).
  374. This works equally well for QuickDraw printers (ImageWriter, StyleWriter,
  375. etc.) as PostScript (most LaserWriters).
  376.  
  377. Read the Tech Note *carefully* before using it; there are some rather
  378. strange caveats.
  379.  
  380. -es
  381.  
  382. __________________________________________________________________________
  383. Eric Scouten                                       Constructor Constructor
  384. scouten@metrowerks.com                                     Metrowerks, Inc.
  385.          **** ON VACATION Dec 21 - Jan 8: LIMITED NET ACCESS ****
  386.  
  387. I saw John Norstad with Elvis! And they were varnishing waffles!
  388.    -Peter Cohen <flargh@tiac.net>
  389.  
  390. +++++++++++++++++++++++++++
  391.  
  392. >From lawa@bbsrc.ac.uk (Andy Law (Big Nose))
  393. Date: 22 Dec 1994 11:14:40 GMT
  394. Organization: Roslin Institute
  395.  
  396.  
  397.   > Robert LaVerne Clark (clarrob@wwc.edu) wrote:
  398.   > : How can I draw a hairline-width line to the
  399.   > : printer? I'm successfully drawing a one-pixel-
  400.   > : wide line, but that's too big and fat for my
  401.   > : purposes.
  402.   > 
  403.  
  404. I think (but I've never done it so don't quote me) that you need to
  405. incorporate PictureComments into your drawing set up. There is one comment
  406. that scales the size of the line to be drawn. I seem to remember some
  407. discussion about problems with scaling in that different printers dealt
  408. with the situation differently, but there was some generalised solution to
  409. it all.
  410.  
  411. Try a WAIS search of the csmp archives to see if you can pull it out.
  412. -- 
  413. Andy Law
  414.  
  415. ( Lawa @ bbsrc.ac.uk                     Big Nose in Edinburgh )
  416.  
  417. ---------------------------
  418.  
  419. >From dimento@cs.tu-berlin.de (Christian Moskal)
  420. Subject: Introduction to object-oriented programming?
  421. Date: 17 Dec 1994 07:03:05 GMT
  422. Organization: Technical University of Berlin, Germany
  423.  
  424. Hello --
  425.  
  426. I am looking for a good introduction to basic principles of object oriented
  427. programming languages such as C++ for a friend of mine.
  428.  
  429. Any pointers will be greatly appreciated.
  430.  
  431.  
  432. Best
  433. -- Chris
  434.  
  435. -- 
  436. I'd rather learn from one bird how to sing
  437. than teach ten thousand stars how not to dance
  438.  
  439. +++++++++++++++++++++++++++
  440.  
  441. >From jim@MCS.COM (Reverend Jim Mines)
  442. Date: 17 Dec 1994 08:17:31 -0600
  443. Organization: The Church Of Digital Splendor
  444.  
  445. Christian Moskal (dimento@cs.tu-berlin.de) wrote:
  446. : Hello --
  447.  
  448. : I am looking for a good introduction to basic principles of object oriented
  449. : programming languages such as C++ for a friend of mine.
  450.  
  451. : Any pointers will be greatly appreciated.
  452.  
  453.  
  454. : Best
  455. : -- Chris
  456.  
  457. : -- 
  458. : I'd rather learn from one bird how to sing
  459. : than teach ten thousand stars how not to dance
  460.  
  461. --
  462.         I'm learning c++/oop with "Simple C++" by Jeffrey M. Cogswell 
  463. (ISBN #1-878739-44-1).
  464.         It's easy to read, but doesn't seem to insult me like the 
  465. 'dummies' books do.  It explains OOP very well, and I've never programmed 
  466. a thing in my life!!!
  467.  
  468.                 Reverend Jim Mines (jim@mcs.com)
  469.     __///////\   The Church of Digital Splendor   /\\\\\\\__
  470.       \\\\\\\/  http://www.mcs.com/~jim/cds.html  \///////
  471.               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  472.  
  473. +++++++++++++++++++++++++++
  474.  
  475. >From stanleyr@acf4.nyu.edu (Rick Stanley)
  476. Date: 17 Dec 1994 16:16:16 GMT
  477. Organization: New York University
  478.  
  479. dimento@cs.tu-berlin.de (Christian Moskal) writes:
  480.  
  481. >Hello --
  482.  
  483. >I am looking for a good introduction to basic principles of object oriented
  484. >programming languages such as C++ for a friend of mine.
  485.  
  486. >Any pointers will be greatly appreciated.
  487.  
  488. Purchase a copy of the following book:
  489.  
  490. "Object-Oriented Analysis And Design, With Applications" 2nd edition
  491. Grady Booch, Author
  492. The Benjamin/Cummings Publishing Co., Inc.
  493. ISBN # 0-8053-5340-2
  494.  
  495. --
  496. Rick Stanley                         |              RSI
  497. stanleyr@acf4.nyu.edu                |         (212) 740-6600
  498. Information Technologies Institute   |        C++ & C Language
  499. New York University   NYC, NY  USA   | Programming, Training, Consulting
  500.  
  501. +++++++++++++++++++++++++++
  502.  
  503. >From pjl@graceland.att.com (Paul J. Lucas)
  504. Date: Sat, 17 Dec 1994 12:32:33 GMT
  505. Organization: AT&T
  506.  
  507. In <dimento-1712940815550001@130.149.1.104> dimento@cs.tu-berlin.de (Christian Moskal) writes:
  508.  
  509. >I am looking for a good introduction to basic principles of object oriented
  510. >programming languages such as C++ for a friend of mine.
  511.  
  512. >Any pointers will be greatly appreciated.
  513.  
  514.         There's the famous "What is" paper by Bjarne:
  515.  
  516.                 Stroustrup, Bjarne.  "What is Object-Oriented
  517.                         Programming?"  IEEE Software, vol. 5, May 1988,
  518.                         pp. 10-20.
  519.  
  520.         The beginning of The C++ Programming Language also has a nice
  521.         explanation as well as a comparison with other methodologies.
  522.  
  523.         For a more general intorduction, there's also a book by Timothy
  524.         Budd -- blue book with a platypus on the cover...can't remember
  525.         the name.  Hopefully, somebody out there in net-land will know.
  526. --
  527.         - Paul J. Lucas
  528.           AT&T Bell Laboratories
  529.           Naperville, IL
  530.  
  531. +++++++++++++++++++++++++++
  532.  
  533. >From howardb@enlil.premenos.com (Howard Berkey)
  534. Date: 18 Dec 1994 02:09:14 GMT
  535. Organization: Premenos Corp.
  536.  
  537. In article <dimento-1712940815550001@130.149.1.104>,
  538. Christian Moskal <dimento@cs.tu-berlin.de> wrote:
  539. >Hello --
  540. >
  541. >I am looking for a good introduction to basic principles of object oriented
  542. >programming languages such as C++ for a friend of mine.
  543. >
  544. >Any pointers will be greatly appreciated.
  545. >
  546. >
  547.  
  548. A book I like is "Object oriented programming - An evolutionary
  549. approach" by Cox and Novbilsky.  It centers around objective C (the
  550. authors are/were principals of Stepstone) but it is applicable to any
  551. OO language.  It is not a book for beginning programmers, however.  It
  552. is pretty in-depth.
  553.  
  554. Also, Grady Booch has a book that everyone seems to like (the title
  555. escapes me, I don't own it).
  556.  
  557. Good luck,
  558.  
  559. -- 
  560. Howard Berkey                                     howardb@premenos.com
  561.                    Windows '95 == Macintosh '84        
  562.  
  563. +++++++++++++++++++++++++++
  564.  
  565. >From garyg@oak.circa.ufl.edu (gary greenberg)
  566. Date: 18 Dec 1994 03:21:19 GMT
  567. Organization: Center for Instructional and Research Computing Activities
  568.  
  569. In article <3d05ka$gqu@tortosa.templar.net>, howardb@enlil.premenos.com (Howard Berkey) writes:
  570. >In article <dimento-1712940815550001@130.149.1.104>,
  571. >Christian Moskal <dimento@cs.tu-berlin.de> wrote:
  572. >>Hello --
  573. >>
  574. >>I am looking for a good introduction to basic principles of object oriented
  575. >>programming languages such as C++ for a friend of mine.
  576. >>
  577. >>Any pointers will be greatly appreciated.
  578. >>
  579. >>
  580. >
  581. >A book I like is "Object oriented programming - An evolutionary
  582. >approach" by Cox and Novbilsky.  It centers around objective C (the
  583. >authors are/were principals of Stepstone) but it is applicable to any
  584. >OO language.  It is not a book for beginning programmers, however.  It
  585. >is pretty in-depth.
  586.  
  587. A basic yet excellent introduction to OO (using Smalltalk to illustrate the
  588. principles as explained) is:
  589. Concpts of Object-Oriented Programming by David N. Smith, McGraw-Hill, Inc.
  590. 1991. ISBN - 0-07-059177-6. I read this when I was thinking about learning
  591. to program, before I had ever even attempted to write a line of code. It helped
  592. convince me that this would be fun. Although I'm still a neophyte, and couldn't
  593. _yet_ find the errors in most posted code, I can say you'll enjoy this book &&
  594. get lot's out of it.
  595. btw, the programmer who recommended it to me has been a smalltalker for about
  596. 12 years and he used it for a class he taught to newbies.
  597.  
  598. Moreover, to all the wizards out there who donate their time to help us
  599. learn && enable us to "stand on the shoulders of those who came before"
  600.                 Happy Holidays To ALL!!
  601. Cheers,
  602. gary
  603.  
  604. +++++++++++++++++++++++++++
  605.  
  606. >From AST@postman.hsn.no (Alf P. Steinbach)
  607. Date: Sun, 18 Dec 1994 05:58:58 GMT
  608. Organization: Nordland College
  609.  
  610. In article <3cv2sg$7o3@cmcl2.NYU.EDU> stanleyr@acf4.nyu.edu (Rick Stanley) writes:
  611. >Xref: news.uit.no comp.lang.c++:92640 comp.lang.misc:15178 comp.sys.mac.programmer:106665 comp.sys.mac.programmer.help:1188 comp.sys.newton.misc:20817 rec.arts.books:107462 rec.arts.books.marketplace:5041
  612. >Path: news.uit.no!trane.uninett.no!sunic!pipex!howland.reston.ans.net!math.ohio-state.edu!uwm.edu!rutgers!mcrcr6!cmcl2!acf4!stanleyr
  613. >Newsgroups: comp.lang.c++,comp.lang.misc,comp.sys.mac.programmer,comp.sys.mac.programmer.help,comp.sys.newton.misc,rec.arts.books,rec.arts.books.marketplace
  614. >Subject: Re: Introduction to object-oriented programming?
  615. >Message-ID: <3cv2sg$7o3@cmcl2.NYU.EDU>
  616. >From: stanleyr@acf4.nyu.edu (Rick Stanley)
  617. >Date: 17 Dec 1994 16:16:16 GMT
  618. >References: <dimento-1712940815550001@130.149.1.104>
  619. >Organization: New York University
  620. >NNTP-Posting-Host: acf4.nyu.edu
  621. >X-Newsreader: NN version 6.5.0 #5 (NOV)
  622. >Lines: 21
  623. >dimento@cs.tu-berlin.de (Christian Moskal) writes:
  624. >
  625. >>Hello --
  626. >
  627. >>I am looking for a good introduction to basic principles of object oriented
  628. >>programming languages such as C++ for a friend of mine.
  629. >
  630. >>Any pointers will be greatly appreciated.
  631. >
  632. >Purchase a copy of the following book:
  633. >
  634. >"Object-Oriented Analysis And Design, With Applications" 2nd edition
  635. >Grady Booch, Author
  636. >The Benjamin/Cummings Publishing Co., Inc.
  637. >ISBN # 0-8053-5340-2
  638. >
  639. >--
  640. >Rick Stanley                         |              RSI
  641. >stanleyr@acf4.nyu.edu                |         (212) 740-6600
  642. >Information Technologies Institute   |        C++ & C Language
  643. >New York University   NYC, NY  USA   | Programming, Training, Consulting
  644.  
  645. Also consider the original "Smalltalk-80:  the language and its 
  646. implementation" (Golberg & Robson, Addison Wesley) as supplementary
  647. literature  -  this book was my introduction to OOP, and it's great: much 
  648. info, discussion of the Smalltalk app framework, and historical interest.
  649.  
  650. For a main text, consider the Eiffel book:  it's very clear, very lucid,
  651. and covers high-level ideas and design issues as well as practical 
  652. techniques and the language support.  But what was the name of the book?
  653.  
  654. +++++++++++++++++++++++++++
  655.  
  656. >From bb@lightside.com (Bob Bradley)
  657. Date: Sat, 17 Dec 1994 22:51:45 -0800
  658. Organization: SS Software Inc.
  659.  
  660. The best book I've seen on Mac Object Programming is Element of C++
  661. Macintosh Programming by Dan Weston. It's a easy book to read that goes
  662. thru what you need to know to to use C++ on the Mac. It goes thru creating
  663. an Application and various Window classes to make a Mac application and
  664. more.
  665.  
  666. +++++++++++++++++++++++++++
  667.  
  668. >From brianm@csa.bu.edu (Brian Mancuso)
  669. Date: 18 Dec 1994 22:25:49 GMT
  670. Organization: Computer Science Department, Boston University, Boston, MA, USA
  671.  
  672. stanleyr@acf4.nyu.edu (Rick Stanley) writes:
  673. | dimento@cs.tu-berlin.de (Christian Moskal) writes:
  674. | Purchase a copy of the following book:
  675. | "Object-Oriented Analysis And Design, With Applications" 2nd edition
  676. | Grady Booch, Author
  677. | The Benjamin/Cummings Publishing Co., Inc.
  678. | ISBN # 0-8053-5340-2
  679.  
  680. I second this motion; this book tends to be the definitive
  681. introductory text to object-oriented programming methodologies. One of
  682. the key strengths of this book is the fact that it takes into
  683. consideration a significant number of the object-oriented styles that
  684. historically have been significant.
  685.  
  686. Brian Mancuso
  687.  
  688. | "Computation is the art of carefully throwing away information." |
  689.                         | Boston University Computer Science Dept. |
  690.                         | Tel: 617.352.8685 Net: brianm@cs.bu.edu  |
  691.                         | Pgp Public Key Avail. Member of the LPF. |
  692.  
  693. +++++++++++++++++++++++++++
  694.  
  695. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  696. Date: Mon, 19 Dec 1994 11:47:40 +0800
  697. Organization: Department of Computer Science, University of Western Australia
  698.  
  699. In article <AST.200.787730338@postman.hsn.no>, AST@postman.hsn.no (Alf P.
  700. Steinbach) wrote:
  701.  
  702. >For a main text, consider the Eiffel book:  it's very clear, very lucid,
  703. >and covers high-level ideas and design issues as well as practical 
  704. >techniques and the language support.  But what was the name of the book?
  705.  
  706. Well there's two...
  707.  
  708. "Object Oriented Software Construction"
  709.  
  710. ...and...
  711.  
  712. "Eiffel: The Language"
  713.  
  714. ... both by Betrand Meyer.  Both are very good IMHO.
  715. --
  716. Quinn "The Eskimo!"                   "Ah ha, the carnage begins!"
  717.  
  718. +++++++++++++++++++++++++++
  719.  
  720. >From zhou0024@eel.micro.umn.edu (CHENGCHEN   ZHOU)
  721. Date: Mon, 19 Dec 1994 22:17:09 GMT
  722. Organization: University of Minnesota, Minneapolis: Under Grad Workstation Lab.
  723.  
  724. In <3curtr$17u@Mars.mcs.com> jim@MCS.COM (Reverend Jim Mines) writes:
  725.  
  726. >Christian Moskal (dimento@cs.tu-berlin.de) wrote:
  727. >: Hello --
  728.  
  729. >: I am looking for a good introduction to basic principles of object oriented
  730. >: programming languages such as C++ for a friend of mine.
  731.  
  732. >: Any pointers will be greatly appreciated.
  733.  
  734.   I just bought the book titled "Design Patterns" by Gamma et.el,
  735.   it categorized certain OOD ideas and explained them using concerete examples.
  736.   I dislike the so called "OO methodology"s, but like this book.
  737.   "OOP should be a pratical discipline".
  738.  
  739.  
  740.   D. Yue 
  741.  
  742. +++++++++++++++++++++++++++
  743.  
  744. >From bw16@cornell.edu (Bretton Wade)
  745. Date: Mon, 19 Dec 1994 20:56:11 -0500
  746. Organization: Cornell Program of Computer Graphics
  747.  
  748. try this one out too:
  749.  
  750.    http://info.desy.de/gna/html/cc/index.html
  751.  
  752.  
  753. In article <dimento-1712940815550001@130.149.1.104>,
  754. dimento@cs.tu-berlin.de (Christian Moskal) wrote:
  755.  
  756. > Hello --
  757. > I am looking for a good introduction to basic principles of object oriented
  758. > programming languages such as C++ for a friend of mine.
  759. > Any pointers will be greatly appreciated.
  760.  
  761. _____________________________________________________________________
  762.  
  763.    Bretton Wade (bw16@cornell.edu)
  764.    http://www.graphics.cornell.edu/~bwade/
  765. _____________________________________________________________________
  766.  
  767. +++++++++++++++++++++++++++
  768.  
  769. >From Brian_Mancuso,brianm-csa.bu.edu,Internet@adbbs.antioch.edu (Brian Mancuso,brianm@csa.bu.edu,Internet)
  770. Date: 18 Dec 1994 22:25:49 GMT
  771. Organization: Apple Dayton User's Group's BBS
  772.  
  773. stanleyr@acf4.nyu.edu (Rick Stanley) writes:
  774. | dimento@cs.tu-berlin.de (Christian Moskal) writes:
  775. | Purchase a copy of the following book:
  776. | "Object-Oriented Analysis And Design, With Applications" 2nd edition
  777. | Grady Booch, Author
  778. | The Benjamin/Cummings Publishing Co., Inc.
  779. | ISBN # 0-8053-5340-2
  780.  
  781. I second this motion; this book tends to be the definitive
  782. introductory text to object-oriented programming methodologies. One of
  783. the key strengths of this book is the fact that it takes into
  784. consideration a significant number of the object-oriented styles that
  785. historically have been significant.
  786.  
  787. Brian Mancuso
  788.  
  789. | "Computation is the art of carefully throwing away information." |
  790.                         | Boston University Computer Science Dept. |
  791.                         | Tel: 617.352.8685 Net: brianm@cs.bu.edu  |
  792.                         | Pgp Public Key Avail. Member of the LPF. |
  793.  
  794. +++++++++++++++++++++++++++
  795.  
  796. >From "Alexander Rxdsten" <siv910111@vm.bi.no>
  797. Date: 21 Dec 1994 10:18:01 GMT
  798. Organization: UniNett
  799.  
  800. dimento@cs.tu-berlin.de (Christian Moskal) wrote:
  801. >
  802. > Hello --
  803. > I am looking for a good introduction to basic principles of object oriented
  804. > programming languages such as C++ for a friend of mine.
  805. > Any pointers will be greatly appreciated.
  806. > Best
  807. > -- Chris
  808. > -- 
  809. > I'd rather learn from one bird how to sing
  810. > than teach ten thousand stars how not to dance
  811.  
  812.  
  813. Suggestion: "OOP" P. Coad & J.Nicola,
  814.  Yourdon Press Computing Series, 1993
  815.  
  816. ---------------------------
  817.  
  818. >From fh3ar@aixterm1.urz.uni-heidelberg.de (Marc Steinbach)
  819. Subject: Memory management in C ?
  820. Date: 19 Dec 1994 10:35:25 -0600
  821. Organization: UTexas Mail-to-News Gateway
  822.  
  823. Hello,
  824. we're looking for an automatic memory management which is handled
  825. by a garbage collection and written in C for use in C-code.
  826. Especially for use with Apple Macs, Windows-based machines and
  827. Sun Sparc running under Solaris.
  828. Thanks for advice.
  829. marc
  830.  
  831. PS: Happy Christmas 
  832.  
  833.  
  834. +++++++++++++++++++++++++++
  835.  
  836. >From gdr11@cl.cam.ac.uk (Gareth Rees)
  837. Date: 20 Dec 1994 05:03:57 GMT
  838. Organization: U of Cambridge Computer Lab, UK
  839.  
  840. Marc Steinbach (fh3ar@aixterm1.urz.uni-heidelberg.de) writes:
  841. > We're looking for an automatic memory management which is handled by
  842. > garbage collection and written in C for use in C-code.
  843.  
  844. Such a beast can't be implemented as a portable C library for use by C
  845. code, because garbage collection is implementation specific.  Consider:
  846.  
  847. (1) How is the garbage collector to distinguish between pointers and
  848. other data, when it is marking/collecting the heap?  Compilers for
  849. languages with garbage collection must tag pointers in some way so as to
  850. make them distinctive.  A garbage collector for a C program must
  851. therefore have detailed knowledge of the structures in the heap so that
  852. it can trace them.
  853.  
  854. (2) How is the garbage collector going to identify pointers into the
  855. heap?  It has to examine the stack, all global variables, and any
  856. variables in registers.  Again, this depends upon detailed knowledge
  857. about the implementation of the compiler.
  858.  
  859. +++++++++++++++++++++++++++
  860.  
  861. >From Lars.Farm@nts.mh.se (Lars Farm)
  862. Date: Tue, 20 Dec 1994 16:20:00 +0100
  863. Organization: Mid Sweden University
  864.  
  865. In article <3d5ojt$omi@lyra.csx.cam.ac.uk>, gdr11@cl.cam.ac.uk (Gareth
  866. Rees) wrote:
  867.  
  868. > Marc Steinbach (fh3ar@aixterm1.urz.uni-heidelberg.de) writes:
  869. > > We're looking for an automatic memory management which is handled by
  870. > > garbage collection and written in C for use in C-code.
  871. >
  872. > Such a beast can't be implemented as a portable C library for use by C
  873. > code, because garbage collection is implementation specific.  Consider:
  874.  
  875. No? Check out Hans Bvhms free GC at ftp.parc.xerox.com in /pub/gc.
  876.  
  877. I can't remember the list of supported machines, but it was long. On the
  878. Mac SC++ is supported. I made it work with MW++ (68K/4-byte int easy) It
  879. should be equaly simple to make it work for PPC. It requires a tiny little
  880. configuration specific support routine in PPC asm and I haven't tried that
  881. yet. One could probably start from the (supported) RS6000.
  882.  
  883. Lars
  884.  
  885. > (1) How is the garbage collector to distinguish between pointers and
  886. > other data, when it is marking/collecting the heap?  Compilers for
  887. > languages with garbage collection must tag pointers in some way so as to
  888. > make them distinctive.  A garbage collector for a C program must
  889. > therefore have detailed knowledge of the structures in the heap so that
  890. > it can trace them.
  891. > (2) How is the garbage collector going to identify pointers into the
  892. > heap?  It has to examine the stack, all global variables, and any
  893. > variables in registers.  Again, this depends upon detailed knowledge
  894. > about the implementation of the compiler.
  895.  
  896. -- 
  897. Lars.Farm@nts.mh.se
  898.  
  899. +++++++++++++++++++++++++++
  900.  
  901. >From boehm@parc.xerox.com (Hans Boehm)
  902. Date: 21 Dec 1994 02:26:02 GMT
  903. Organization: Xerox Palo Alto Research Center
  904.  
  905. gdr11@cl.cam.ac.uk (Gareth Rees) writes:
  906.  
  907. >Marc Steinbach (fh3ar@aixterm1.urz.uni-heidelberg.de) writes:
  908. >> We're looking for an automatic memory management which is handled by
  909. >> garbage collection and written in C for use in C-code.
  910.  
  911. >Such a beast can't be implemented as a portable C library for use by C
  912. >code, because garbage collection is implementation specific.  Consider:
  913.  
  914. Depends on what you mean by "portable".  The collector in
  915. parcftp.xerox.com:pub/gc/gc.tar.Z has been ported to all common
  916. workstation UN*X-like systems, win32, MacOS, OS/2 and AmigaDOS.
  917. Admittedly it contains some conditionally compiled code.
  918.  
  919. >(1) How is the garbage collector to distinguish between pointers and
  920. >other data, when it is marking/collecting the heap?  Compilers for
  921. >languages with garbage collection must tag pointers in some way so as to
  922. >make them distinctive.  A garbage collector for a C program must
  923. >therefore have detailed knowledge of the structures in the heap so that
  924. >it can trace them.
  925.  
  926. Or it can be conservative and trace through everything that looks like
  927. a pointer.  Doing so actually loses surprisingly little provided, as
  928. always, that you get the details right.  You need to restrict source
  929. programs slightly.  But the large majority of exisiting C programs
  930. already satisfy those restrictions.  (Strict ANSI conformance, plus
  931. some restrictions on pointer IO and memcpy and friends are sufficient.)
  932.  
  933. >(2) How is the garbage collector going to identify pointers into the
  934. >heap?  It has to examine the stack, all global variables, and any
  935. >variables in registers.  Again, this depends upon detailed knowledge
  936. >about the implementation of the compiler.
  937.  
  938. Again, a conservative scan for anything that looks like a pointer will do.
  939. You still have to find the stack, registers, etc., which introduces
  940. a minor OS/hardware dependency.  The only compiler dependency is that
  941. we expect the compiler not to disguise the last reference to an object.
  942. Most (all?) compilers preserve that property for unoptimized code.  (They almost
  943. have to, if you think about the requirements imposed by a debugger.)
  944. Some compilers (e.g. gcc) allow that property to be ensured by a
  945. source-to-source preprocessor at small cost, even in the presence of
  946. optimization.  We have never seen a real case of a compiler not
  947. maintaining this property, even on unprocessed, optimized code.  However,
  948. we can contrive cases that fail with optimization.
  949.  
  950. Probably the majority of compilers that use C as an intermediate language
  951. rely on some form of conservative collection for the target code (e.g.
  952. GCL (a.k.a. AKCL), Scheme-to-C, Bigloo, SRC Modula-3, Sather 1.0,
  953. Cedar).
  954.  
  955. Hans-J. Boehm
  956. (boehm@parc.xerox.com)
  957. Standard disclaimer ...
  958.  
  959. +++++++++++++++++++++++++++
  960.  
  961. >From devon@apple.com (Devon Hubbard)
  962. Date: Wed, 21 Dec 1994 11:11:13 -0800
  963. Organization: Apple Computer, Inc.
  964.  
  965. In article <9412191635.AA23470@ix.urz.uni-heidelberg.de>,
  966. fh3ar@aixterm1.urz.uni-heidelberg.de (Marc Steinbach) wrote:
  967.  
  968. > we're looking for an automatic memory management which is handled
  969. > by a garbage collection and written in C for use in C-code.
  970. > Especially for use with Apple Macs, Windows-based machines and
  971. > Sun Sparc running under Solaris.
  972.  
  973. Although I've never personally used it, I've heard good stuff about a
  974. cross platform memory management package called SmartHeap(tm) from
  975. MicroQuill. You can use it on Windows, UNIX (Sun, HP, etc.), OS/2, NT,
  976. Extended DOS and Macs. You can write 'devtools@microquill.win.net' for
  977. specific information.
  978.  
  979. dEVoN
  980.  
  981. - ------------------------------------------------------------------------
  982. Devon Hubbard                                                Silicon Pilot
  983. devon@apple.com                                        Apple Computer, Inc
  984.  
  985. +++++++++++++++++++++++++++
  986.  
  987. >From h+@metrowerks.com (Jon W{tte)
  988. Date: Wed, 21 Dec 1994 20:27:43 +0100
  989. Organization: The Conspiracy
  990.  
  991. In article <3d5ojt$omi@lyra.csx.cam.ac.uk>,
  992. gdr11@cl.cam.ac.uk (Gareth Rees) wrote:
  993.  
  994. >> We're looking for an automatic memory management which is handled by
  995. >> garbage collection and written in C for use in C-code.
  996.  
  997. >Such a beast can't be implemented as a portable C library for use by C
  998. >code, because garbage collection is implementation specific.  Consider:
  999.  
  1000. There's a C and C++ library from Xerox which supposedly does 
  1001. this (I don't doubt it; I read the abstract and it wasn't too 
  1002. hairy)
  1003.  
  1004. >(1) How is the garbage collector to distinguish between pointers and
  1005. >other data, when it is marking/collecting the heap?  Compilers for
  1006.  
  1007. Surprise! It doesn't have to! Anything that looks like it could 
  1008. point into an allocated memory block can be said to reference 
  1009. that block, and the block is marked as referenced. All blocks 
  1010. not marked after a sweep are purged. So what if a few blocks 
  1011. aren't dstroyed immediately (or at all)
  1012.  
  1013. Oh, and the chances of actual data looking like pointers into 
  1014. an allocated block and not being such pointers is actually 
  1015. pretty slim!
  1016.  
  1017. >make them distinctive.  A garbage collector for a C program must
  1018. >therefore have detailed knowledge of the structures in the heap so that
  1019. >it can trace them.
  1020.  
  1021. Yes, it has to have detailed knowledge of the heap. Such 
  1022. knowledge IS available for the Mac memory manager heap, but the 
  1023. simplest thing to do is to replace malloc() and/or ::operator 
  1024. new() with your own allocator. That's not rocket science.
  1025.  
  1026. >(2) How is the garbage collector going to identify pointers into the
  1027. >heap?  It has to examine the stack, all global variables, and any
  1028. >variables in registers.  Again, this depends upon detailed knowledge
  1029. >about the implementation of the compiler.
  1030.  
  1031. Uh, no. As you say, it has to examine all registers, all global 
  1032. variables, and all local variables on the stack. It's well 
  1033. known where to find these for each system, and "portable" 
  1034. doesn't mean you have to compile ALL of the same code for all 
  1035. systems, just that you can move the code with relatively little 
  1036. effort (like, telling a header file where the stack is and 
  1037. where global data is)
  1038.  
  1039. Just walk the stack and global data (and all blocks 
  1040. subsequently marked as referenced...) on 2-byte boundaries 
  1041. (this is a 68K with short-sized ints and/or Booleans...) Then 
  1042. call setjmp() to get all registers into a buffer. If setjmp() 
  1043. doesn't work, write a smidgeon of assembly, and you're done.
  1044.  
  1045. This seems to be exactly what the Xerox gc library does, by the 
  1046. way!
  1047.  
  1048. Cheers,
  1049.  
  1050.                                                         / h+
  1051.  
  1052.  
  1053. --
  1054.   Jon Wdtte (h+@metrowerks.com), Hagagatan 1, 113 48 Stockholm, Sweden
  1055.   "It was, in fact, cool as all get-out.  Fortunately it was a little
  1056.    too late (historically speaking) to be groovy."
  1057.                      -- Dennis Pelton
  1058.  
  1059.  
  1060. +++++++++++++++++++++++++++
  1061.  
  1062. >From gurgle@dnai.com (Pete Gontier)
  1063. Date: Thu, 22 Dec 1994 14:22:54 -0700
  1064. Organization: cellular
  1065.  
  1066. In article <3d83nq$qvl@news.parc.xerox.com>,
  1067. boehm@parc.xerox.com (Hans Boehm) wrote:
  1068.  
  1069. > You still have to find the stack...
  1070.  
  1071. On Macintosh, an application may have several stacks, one for each
  1072. lightweight thread. Is there multiple stack support in this library?
  1073.  
  1074. ________________________________________________________________________________
  1075.  Pete Gontier -- MacZealotry, Ink. -- gurgle@dnai.com
  1076.  Where do I want to go today? Anywhere but Chicago.
  1077.  
  1078. ---------------------------
  1079.  
  1080. >From julian@cs.auckland.ac.nz (Julian Harris)
  1081. Subject: Recordable applications
  1082. Date: Mon, 19 Dec 1994 14:23:04 +1300
  1083. Organization: Computer Science Department, UA
  1084.  
  1085. Well, along with the famous net saying 'The best way to get information on
  1086. UseNet isn't to ask a question, but to post the wrong information', I'll
  1087. start off by saying
  1088.  
  1089. I've been researching the Apple event manager and was wondering how to
  1090. find out whether an application is recording apple events (to optimise my
  1091. ui routines, I wanted to only send/receive apple events to myself when
  1092. recording) and I found in IM-Interapplication Communication, 9-36:
  1093.  
  1094.     "To determine whether another process is recording apple events, check
  1095.      bit 7 of the _AEProcessState_ ($B1F) low memory global and adjust your
  1096.      apple event sending routine appropriately"
  1097.  
  1098. ...but this is all lies and I just made it up.
  1099.  
  1100. ON p9-36 in IAC, it talks about the 'Start Recording' event which is sent
  1101. to all running processes when an application (e.g. Script Editor)
  1102. indicates it wants to start recording. 
  1103.  
  1104. I want to write an application that is fully recordable and scriptable,
  1105. but I reel at the thought of having to send and receive apple events for
  1106. everything I do just so that a recording will get the stuff. And in all
  1107. reality, even in a few years, you won't be recording more than about 10%
  1108. of the time.
  1109.  
  1110. Wouldn't it be better to only generate the events when someone is
  1111. listening? I.e. in response to 'Start Recording', set a global flag, and
  1112. clear it when you get a 'Stop Recording' message. Then in your ui dispatch
  1113. routines, you can check the flag and generate the apple event if something
  1114. is recording.
  1115.  
  1116. Comments?
  1117. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  1118. Microsoft is not the answer.                    >  Julian Harris, Programmer   >
  1119. Microsoft is the question.                     >  Comp. Sci. Dept.     x8915  >
  1120.                                               >  The University of Auckland  >
  1121. NO is the answer.                            >  julian@cs.auckland.ac.nz    >
  1122.  
  1123. +++++++++++++++++++++++++++
  1124.  
  1125. >From stk@DoBag.IN-Berlin.DE (Stefan Kurth)
  1126. Date: Mon, 19 Dec 1994 03:34:19 +0100
  1127. Organization: none
  1128.  
  1129. In article <julian-1912941423040001@julian.cs.aukuni.ac.nz>,
  1130. julian@cs.auckland.ac.nz (Julian Harris) wrote:
  1131. > I want to write an application that is fully recordable and scriptable,
  1132. > but I reel at the thought of having to send and receive apple events for
  1133. > everything I do just so that a recording will get the stuff.
  1134. >
  1135. > Wouldn't it be better to only generate the events when someone is
  1136. > listening?
  1137.  
  1138. If you send AppleEvents to yourself, they don't go through the event
  1139. loop, but are directly dispatched to the respective AE handlers.  This
  1140. seems quite efficient, and is unlikely to slow down the application.  I
  1141. don't think what you suggest is worth the trouble.
  1142.  
  1143. ________________________________________________________________________
  1144. Stefan Kurth             Berlin, Germany          stk@dobag.in-berlin.de
  1145.  
  1146. +++++++++++++++++++++++++++
  1147.  
  1148. >From plsuh@econ.sas.upenn.edu (Paul L. Suh)
  1149. Date: Sun, 18 Dec 1994 22:52:28 -0500
  1150. Organization: UPenn Grad Econ
  1151.  
  1152. In article <julian-1912941423040001@julian.cs.aukuni.ac.nz>,
  1153. julian@cs.auckland.ac.nz (Julian Harris) wrote:
  1154.  
  1155. > I want to write an application that is fully recordable and scriptable,
  1156. > but I reel at the thought of having to send and receive apple events for
  1157. > everything I do just so that a recording will get the stuff. And in all
  1158. > reality, even in a few years, you won't be recording more than about 10%
  1159. > of the time.
  1160. > Wouldn't it be better to only generate the events when someone is
  1161. > listening? I.e. in response to 'Start Recording', set a global flag, and
  1162. > clear it when you get a 'Stop Recording' message. Then in your ui dispatch
  1163. > routines, you can check the flag and generate the apple event if something
  1164. > is recording.
  1165.  
  1166. As I understand the guidelines, a true object model scriptable app should
  1167. not care where the AE came from, outside or inside the app.  If you
  1168. receive a MenuKey-type command to set the text style to italic, for
  1169. instance, you should send yourself an AppleEvent telling you to set the
  1170. selection to italic.  The overhead involved in this is minimal, and you
  1171. reduce the chances of bugs creeping in because you handle an AE command
  1172. slightly differently from an internal one.  As a bonus, recordability is
  1173. almost automatic.  
  1174.  
  1175.  
  1176. --Paul
  1177.  
  1178. -- 
  1179. P |\   / S   University of Pennsylvania
  1180.   | \ /      Graduate Economics
  1181.   |  X
  1182.   | / \      Paul L. Suh
  1183.   |/   \ D   plsuh@econ.sas.upenn.edu
  1184.   +------ Q
  1185.  
  1186. +++++++++++++++++++++++++++
  1187.  
  1188. >From julian@cs.auckland.ac.nz (Julian Harris)
  1189. Date: Tue, 20 Dec 1994 10:44:05 +1300
  1190. Organization: Computer Science Department, UA
  1191.  
  1192. In article <3d2rf7$35r@unlisys.IN-Berlin.DE>, stk@DoBag.IN-Berlin.DE
  1193. (Stefan Kurth) wrote:
  1194.  
  1195. > In article <julian-1912941423040001@julian.cs.aukuni.ac.nz>,
  1196. > julian@cs.auckland.ac.nz (Julian Harris) wrote:
  1197. > > I want to write an application that is fully recordable and scriptable,
  1198. > > but I reel at the thought of having to send and receive apple events for
  1199. > > everything I do just so that a recording will get the stuff.
  1200. > >
  1201. > > Wouldn't it be better to only generate the events when someone is
  1202. > > listening?
  1203. > If you send AppleEvents to yourself, they don't go through the event
  1204. > loop, but are directly dispatched to the respective AE handlers.
  1205.  
  1206. Yes, but you still have to encapsulate the object descriptors and parse
  1207. them again on receipt. 
  1208.  
  1209. >This
  1210. > seems quite efficient, and is unlikely to slow down the application.  I
  1211. > don't think what you suggest is worth the trouble.
  1212.  
  1213. Have you written a recorable app yourself?
  1214. Constructing object specifiers seems to be a time consuming, nontrivial
  1215. task. Any of the demos that are provided with AppleScript CD contain
  1216. _hundreds_ of k of source. You maybe right, and I hope so, but I'm not
  1217. convinced.
  1218. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  1219. Microsoft is not the answer.                    >  Julian Harris, Programmer   >
  1220. Microsoft is the question.                     >  Comp. Sci. Dept.     x8915  >
  1221.                                               >  The University of Auckland  >
  1222. NO is the answer.                            >  julian@cs.auckland.ac.nz    >
  1223.  
  1224. +++++++++++++++++++++++++++
  1225.  
  1226. >From ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
  1227. Date: 22 Dec 94 21:07:05 +1300
  1228. Organization: University of Waikato, Hamilton, New Zealand
  1229.  
  1230. In article <plsuh-1812942252290001@ts3-40.upenn.edu>, plsuh@econ.sas.upenn.edu (Paul L. Suh) writes:
  1231. > In article <julian-1912941423040001@julian.cs.aukuni.ac.nz>,
  1232. > julian@cs.auckland.ac.nz (Julian Harris) wrote:
  1233. >
  1234. >> I want to write an application that is fully recordable and scriptable,
  1235. >> but I reel at the thought of having to send and receive apple events for
  1236. >> everything I do just so that a recording will get the stuff. And in all
  1237. >> reality, even in a few years, you won't be recording more than about 10%
  1238. >> of the time.
  1239. >>
  1240. >> Wouldn't it be better to only generate the events when someone is
  1241. >> listening? I.e. in response to 'Start Recording', set a global flag, and
  1242. >> clear it when you get a 'Stop Recording' message. Then in your ui dispatch
  1243. >> routines, you can check the flag and generate the apple event if something
  1244. >> is recording.
  1245. >
  1246. > As I understand the guidelines, a true object model scriptable app should
  1247. > not care where the AE came from, outside or inside the app.  If you
  1248. > receive a MenuKey-type command to set the text style to italic, for
  1249. > instance, you should send yourself an AppleEvent telling you to set the
  1250. > selection to italic.  The overhead involved in this is minimal, and you
  1251. > reduce the chances of bugs creeping in because you handle an AE command
  1252. > slightly differently from an internal one.  As a bonus, recordability is
  1253. > almost automatic.
  1254.  
  1255. I want to add my agreement to Paul's posting. Having spent about six weeks'
  1256. worth of evenings and weekends working on a viewer for QuickDraw GX Portable
  1257. Digital Documents that also happens to be scriptable and recordable and
  1258. supports the AppleEvent Object Model, I don't think it's really worth it to
  1259. try to do things two different ways, depending on whether somebody is
  1260. recording your actions or not. It just adds extra complications to your code.
  1261.  
  1262. There are a few situations where you might not want to incur the overhead
  1263. of sending too many events, such as:
  1264.  
  1265. * Typing text. It makes sense to save up a string of text that the user has
  1266. typed, and send them as one event when the user does something else. I believe
  1267. the Scriptable Text Editor might do something like this.
  1268. * Performing some continuous action, such as scrolling a view in a window.
  1269. It makes sense to send a single event to set the view origin to the final
  1270. value when the user releases the mouse button.
  1271.  
  1272. Note that in both these cases, the event you send tells you to do something
  1273. that you've already done. The way I deal with this is by having a bit of smarts
  1274. in the event handling code, so that it doesn't do anything in response to an
  1275. event which is effectively a no-op. I feel this is preferable to setting the
  1276. kAEDontExecute bit in the SendMode flags, as that depends on having AppleEvent
  1277. Manager 1.0.1 or later, which might not be present.
  1278.  
  1279. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  1280. Computer Services Dept                     fax: +64-7-838-4066
  1281. University of Waikato            electric mail: ldo@waikato.ac.nz
  1282. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00
  1283.  
  1284. +++++++++++++++++++++++++++
  1285.  
  1286. >From jwbaxter@olympus.net (John W. Baxter)
  1287. Date: Thu, 22 Dec 1994 08:55:32 -0800
  1288. Organization: Internet for the Olympic Peninsula
  1289.  
  1290. In article <1994Dec22.210705.36213@waikato.ac.nz>, ldo@waikato.ac.nz
  1291. (Lawrence D'Oliveiro, Waikato University) wrote:
  1292.  
  1293. > There are a few situations where you might not want to incur the overhead
  1294. > of sending too many events, such as:
  1295. > * Typing text. It makes sense to save up a string of text that the user has
  1296. > typed, and send them as one event when the user does something else. I believe
  1297. > the Scriptable Text Editor might do something like this.
  1298.  
  1299. A likely starting point for finding those situations is "does Undo undo a
  1300. bunch of stuff?"  If so, it's likely that one recorded event represents
  1301. several actions.
  1302.  
  1303. > Note that in both these cases, the event you send tells you to do something
  1304. > that you've already done. The way I deal with this is by having a bit of
  1305. smarts
  1306. > in the event handling code, so that it doesn't do anything in response to an
  1307. > event which is effectively a no-op. I feel this is preferable to setting the
  1308. > kAEDontExecute bit in the SendMode flags, as that depends on having AppleEvent
  1309. > Manager 1.0.1 or later, which might not be present.
  1310.  
  1311. Good point about AE Manager 1.0.  However, it's probably better to mark
  1312. the event execute only (to avoid the overhead of starting the event
  1313. handler only to notice that it shouldn't run, on non-archiac systems) AND
  1314. to detect that the event shouldn't be handled.  Ideally, one would be able
  1315. to dig the send mode out of the event and check the don't execute bit, but
  1316. a quick look didn't show me a supported way to do that.
  1317.  
  1318. It might be interesting to experiment with an attribute defined by the
  1319. app, to hold the information.
  1320.  
  1321.    --John
  1322.  
  1323. -- 
  1324. John Baxter    Port Ludlow, WA, USA  [West shore, Puget Sound]
  1325.    jwbaxter@pt.olympus.net
  1326.  
  1327. ---------------------------
  1328.  
  1329. >From raub@alder.circa.ufl.edu (Mauricio C Tavares)
  1330. Subject: Transparent PICTs?
  1331. Date: 28 Nov 1994 20:59:44 -0600
  1332. Organization: UTexas Mail-to-News Gateway
  1333.  
  1334.         I know this may be a pretty silly question, but what do I need to 
  1335. do to write a PICT resource on the top of the other so that the white 
  1336. space surrounding the drawing itself bahaves as if it was transparent?
  1337.  
  1338. +++++++++++++++++++++++++++
  1339.  
  1340. >From chaoyang@usc.edu (Chao-Kuang Yang (Mark Yang))
  1341. Date: Fri, 18 Nov 1994 22:27:56 -0800
  1342. Organization: Z-Perception Graphics
  1343.  
  1344. In article <199411290300.WAA02464@grove.ufl.edu>, raub@alder.circa.ufl.edu
  1345. (Mauricio C Tavares) wrote:
  1346.  
  1347. >         I know this may be a pretty silly question, but what do I need to 
  1348. > do to write a PICT resource on the top of the other so that the white 
  1349. > space surrounding the drawing itself bahaves as if it was transparent?
  1350.  
  1351. Hi!
  1352.    What you can do is to scan through the picture, which overlays another,
  1353. itself and set the clip region on the other overlayed picture.  You can
  1354. refer to Inside Macintosh: Imaging to the operation about the clip region.
  1355.  
  1356. Mark Yang
  1357.  
  1358. +++++++++++++++++++++++++++
  1359.  
  1360. >From "Jonathan R. Seagrave" <jrs@doek.uoregon.edu>
  1361. Date: Mon, 28 Nov 1994 22:18:10 -0800 (PST)
  1362. Organization: University of Oregon
  1363.  
  1364. On 28 Nov 1994, Mauricio C Tavares wrote:
  1365. >       I know this may be a pretty silly question, but what do I need to 
  1366. > do to write a PICT resource on the top of the other so that the white 
  1367. > space surrounding the drawing itself bahaves as if it was transparent?
  1368.  
  1369. hmmm... I'd like to know the answer to this one too. ??
  1370.  
  1371. jrs
  1372.  
  1373. +++++++++++++++++++++++++++
  1374.  
  1375. >From songer@lexmark.com
  1376. Date: Tue, 29 Nov 1994 16:33:38 GMT
  1377. Organization: Lexmark International, Lexington, KY
  1378.  
  1379. In article <Pine.NXT.3.90.941128221533.8160C-100000@doek.uoregon.edu> "Jonathan R. Seagrave" <jrs@doek.uoregon.edu> writes:
  1380.  
  1381.    On 28 Nov 1994, Mauricio C Tavares wrote:
  1382.    >    I know this may be a pretty silly question, but what do I need to 
  1383.    > do to write a PICT resource on the top of the other so that the white 
  1384.    > space surrounding the drawing itself bahaves as if it was transparent?
  1385.  
  1386.    hmmm... I'd like to know the answer to this one too. ??
  1387.  
  1388.  
  1389. Hi!
  1390.  
  1391.      Here's how I do it. Be aware that in this solution I am willing
  1392. to sacrifice memory and setup time for fast compositing. 
  1393.  
  1394.      Draw both picts into GWorlds with the Draw Picture call (make
  1395. sure your GWorld's are erased. The GWorld holding the overlaying pict
  1396. should be an Offscreen GWorld.) Then use CopyBits() with the
  1397. transparent operator to copy the PixMap containing the overlay picture
  1398. into the base picture's PixMap. You now have a GWorld which has the
  1399. base picture and the overlay in it. (Destroy the overlay Offscreen
  1400. GWorld if you no longer need it.)
  1401.  
  1402.      If you are only doing this once, then you should probably
  1403. consider making this resultant pixmap the pixmap for the window in
  1404. which you are drawing -- ie draw the base pict into the window, draw
  1405. the overlay pict into an offscreen GWorld and then CopyBits() the
  1406. overlay into the window. If, however, you are going to composite this
  1407. combined image alot, you might consider retaining the combined image
  1408. in an offscreen GWorld so that you can do this quickly. The
  1409. transparent CopyBits() is comparitively slow.
  1410.  
  1411.      I am by no means a mac programming whiz, (I just started about
  1412. four months ago and only do it in my spare time.) so there may be a
  1413. better solution but this one does work.
  1414.  
  1415. Anyway,
  1416. -Chris
  1417. songer@lexmark.com
  1418.  
  1419. +++++++++++++++++++++++++++
  1420.  
  1421. >From cons116@titan.ucs.umass.edu (Mike White)
  1422. Date: 30 Nov 1994 19:00:35 GMT
  1423. Organization: University of Massachusetts, Amherst
  1424.  
  1425. Mauricio C Tavares (raub@alder.circa.ufl.edu) wrote:
  1426. :       I know this may be a pretty silly question, but what do I need to 
  1427. : do to write a PICT resource on the top of the other so that the white 
  1428. : space surrounding the drawing itself bahaves as if it was transparent?
  1429.  
  1430. Another solution is to use photoshop to create a mask of the image by
  1431. selecting the unwanted regions (magic wand would work well here), selecting
  1432. the inverse of this, and then feathering, if you want a a smoothly
  1433. transitioned overlay.
  1434.  
  1435. I believe you should then be able to bring up the images in an ofscreen
  1436. world and do copybits using some sort of "and" operation (note intentional
  1437. vagueness: I haven't actually done this before, but the theory should hold
  1438. true).  The downside of this is that you must use an image editing program
  1439. rather than directly programming to analyze the image.  It should work
  1440. though.
  1441.  
  1442. Most implementations of sprites that I know of work in basically this manner.
  1443.  
  1444. mike white
  1445.  
  1446.  
  1447. +++++++++++++++++++++++++++
  1448.  
  1449. >From Jeremy Doig <jeremy@power.globalnews.com>
  1450. Date: 1 Dec 1994 20:11:04 GMT
  1451. Organization: Internet Publishing
  1452.  
  1453. In article <199411290300.WAA02464@grove.ufl.edu> Mauricio C Tavares,
  1454. raub@alder.circa.ufl.edu writes:
  1455. >       I know this may be a pretty silly question, but what do I need to
  1456. >do to write a PICT resource on the top of the other so that the white
  1457. >space surrounding the drawing itself bahaves as if it was transparent?
  1458.  
  1459. Just on the off chance - if you're thinking of writing a Transparent GIF
  1460. maker, it's been done by Aaron Giles (and it's great).
  1461. If not, sorry I spoke...
  1462.  
  1463.  
  1464. Jeremy
  1465.  
  1466. +++++++++++++++++++++++++++
  1467.  
  1468. >From Charles Thomas <Charlest@macc.wisc.edu>
  1469. Date: 3 Dec 1994 21:25:31 GMT
  1470. Organization: IMR, University of Wisconsin-Madison
  1471.  
  1472. In article <SONGER.94Nov29113338@ovation.lexmark.com> ,
  1473. songer@lexmark.com writes:
  1474. >
  1475. >     Here's how I do it. Be aware that in this solution I am willing
  1476. >to sacrifice memory and setup time for fast compositing. 
  1477. >
  1478. >     Draw both picts into GWorlds with the Draw Picture call (make
  1479. >sure your GWorld's are erased. The GWorld holding the overlaying pict
  1480. >should be an Offscreen GWorld.) Then use CopyBits() with the
  1481. >transparent operator to copy the PixMap containing the overlay picture
  1482. >into the base picture's PixMap. You now have a GWorld which has the
  1483. >base picture and the overlay in it. (Destroy the overlay Offscreen
  1484. >GWorld if you no longer need it.)
  1485. >
  1486. >     If you are only doing this once, then you should probably
  1487. >consider making this resultant pixmap the pixmap for the window in
  1488. >which you are drawing -- ie draw the base pict into the window, draw
  1489. >the overlay pict into an offscreen GWorld and then CopyBits() the
  1490. >overlay into the window. If, however, you are going to composite this
  1491. >combined image alot, you might consider retaining the combined image
  1492. >in an offscreen GWorld so that you can do this quickly. The
  1493. >transparent CopyBits() is comparitively slow.
  1494. >
  1495.  
  1496. Would the CopyBits operation with the transparent operator work to make a
  1497. transparent PICT overlay from a frame of a QuickTime movie?
  1498.  
  1499. More specifically, I'm trying to make a program to put an overlay onto a
  1500. quicktime movie as it's playing (e.g. an arrow following some feature in
  1501. the quicktime movie).
  1502.  
  1503. I can make an overlay that moves around in response to the mouse (and can
  1504. be turned on or off) by creating a new track and setting the Clip Region
  1505. for that track to be arrow-shaped, but this doesn't allow the user to
  1506. play back or save the movements of the arrow in the overlay.  
  1507.  
  1508. So, what I'd like to do is creat a PICT of the arrow at the mouse
  1509. position, have everything but the arrow be transparent (so the QuickTime
  1510. movie underneath can be seen), then save the PICT to the overlay track. 
  1511. In this way it could be played back and turned on/off.
  1512.  
  1513. So... would your method allow you to use the Transparent Operator to do
  1514. operations on a PICT from a QuickTime frame?
  1515.  
  1516. +++++++++++++++++++++++++++
  1517.  
  1518. >From hanrek@cts.com (Mark Hanrek)
  1519. Date: Sat, 3 Dec 1994 20:13:30 GMT
  1520. Organization: The Information Worskhop
  1521.  
  1522. In article <199411290300.WAA02464@grove.ufl.edu>, raub@alder.circa.ufl.edu
  1523. (Mauricio C Tavares) wrote:
  1524.  
  1525. >         I know this may be a pretty silly question, but what do I need to 
  1526. > do to write a PICT resource on the top of the other so that the white 
  1527. > space surrounding the drawing itself bahaves as if it was transparent?
  1528.  
  1529.  
  1530. This effect is accomplished by using "transparent" in the CopyBits "mode"
  1531. parameter. Normally the mode parameter is "srcCopy", which says to copy
  1532. all of the pixels regardless.
  1533.  
  1534. Too simple.
  1535.  
  1536. But, you are presumably using DrawPicture to draw your PICTs.  Here's the
  1537. deal...
  1538.  
  1539. Keep in mind that a PICT is a complex conglomeration of a lot of things
  1540. (e.g. color tables, bitmaps, drawing operations, clip regions, etc).  
  1541.  
  1542. Presumably the PICT in question was created by someone else.  There is
  1543. probably a "copybits" operation within that PICT, but you cannot get in
  1544. there and change the copybits mode to "transparent".
  1545.  
  1546. So, what you must do is first draw the PICT to a GWorld the same depth as
  1547. the destination window, and then CopyBits the GWorld to the destination
  1548. window so that you have the opportunity to specify the "transparent"
  1549. transfermode.
  1550.  
  1551. - ---
  1552.  
  1553. Depending on your situation, it is possible for you to "recreate" that
  1554. PICT so that it does what you wanted in the first place.  You would do
  1555. this by drawing the PICT to the GWorld as before, then call OpenPicture,
  1556. CopyBits the image to itself using the transparent mode, and then
  1557. ClosePicture.  
  1558.  
  1559. But there could be sticky issues, such as the original bit depth of the
  1560. picture.  Or the graphic may be constructed with lots of individual
  1561. graphic objects (MacDraw-style), and all of that would be lost by
  1562. recreating the picture.  I am really mentioning this just for completeness
  1563. and perspective.
  1564.  
  1565. Mark Hanrek
  1566. The Information Workshop
  1567.  
  1568. +++++++++++++++++++++++++++
  1569.  
  1570. >From songer@lexmark.com
  1571. Date: Wed, 14 Dec 1994 18:08:24 GMT
  1572. Organization: Lexmark International, Lexington, KY
  1573.  
  1574. In article <3bqnob$4h7@news.doit.wisc.edu> Charles Thomas <Charlest@macc.wisc.edu> writes:
  1575.    [...]
  1576.    So... would your method allow you to use the Transparent Operator to do
  1577.    operations on a PICT from a QuickTime frame?
  1578.    [...]
  1579.  
  1580. Hi!
  1581.  
  1582.      Unfortunately, I don't know.
  1583.  
  1584. -Chris
  1585.  
  1586. +++++++++++++++++++++++++++
  1587.  
  1588. >From ikb_macd@ece.concordia.ca (Keith MacDonald)
  1589. Date: 16 Dec 1994 04:30:00 GMT
  1590. Organization: ECE - Concordia University
  1591.  
  1592. : >         I know this may be a pretty silly question, but what do I need to 
  1593. : > do to write a PICT resource on the top of the other so that the white 
  1594. : > space surrounding the drawing itself bahaves as if it was transparent?
  1595.  
  1596.  
  1597. : This effect is accomplished by using "transparent" in the CopyBits "mode"
  1598. : parameter. Normally the mode parameter is "srcCopy", which says to copy
  1599. : all of the pixels regardless.
  1600.  
  1601. Just a quick note - "transparent" copies all bits which are not *the same as
  1602. the background color* (which may not be white in all cases).  I know the 
  1603. original post was for a white background but I soon found out it won't work
  1604. with non-white backgrounds with a pict w/ white background...back to copyMask().
  1605.  
  1606. Cheers,
  1607. Keith
  1608. ___________________________________________________________________________
  1609.  Keith MacDonald                                       Computer Engineering
  1610.  ikb_macd@ECE.concordia.ca                             Concordia University
  1611.  http://www.ece.concordia.ca/~ikb_macd/addr.html       Montreal, QC, Canada
  1612.  
  1613. +++++++++++++++++++++++++++
  1614.  
  1615. >From greg@cosc.canterbury.ac.nz (Greg Ewing)
  1616. Date: 21 Dec 1994 00:36:12 GMT
  1617. Organization: University of Canterbury, Christchurch, New Zealand
  1618.  
  1619.  
  1620.  
  1621. +++++++++++++++++++++++++++
  1622.  
  1623. >From greg@cosc.canterbury.ac.nz (Greg Ewing)
  1624. Date: 21 Dec 1994 00:38:04 GMT
  1625. Organization: University of Canterbury, Christchurch, New Zealand
  1626.  
  1627.  
  1628. In article <3cr548$lo6@newsflash.concordia.ca>, ikb_macd@ece.concordia.ca (Keith MacDonald) writes:
  1629. |> it won't work with non-white backgrounds with a pict w/ white background...
  1630. |> back to copyMask().
  1631.  
  1632. Why not just set the background colour to white for the
  1633. duration of the CopyBits?
  1634.  
  1635. Greg Ewing, Computer Science Dept, +--------------------------------------+
  1636. University of Canterbury,          | A citizen of NewZealandCorp, a       |
  1637. Christchurch, New Zealand          | wholly-owned subsidiary of Japan Inc.|
  1638. greg@cosc.canterbury.ac.nz         +--------------------------------------+
  1639.  
  1640. ---------------------------
  1641.  
  1642. End of C.S.M.P. Digest
  1643. **********************
  1644.